<?php 
/**
 * 购物车模型
 * @author tangbl
 *
 */
class CartModel extends Model {

	/**
	 array(
 		0.字段名
		1.验证规则 [require 字段必须、email 邮箱、url URL地址、currency 货币、number 数字]
		2.提示信息  {%usr_form_validata_email_email}
		3.验证条件 [0.(默认)存在字段就验证;1.必须验证;2.值不为空的时候验证]
		4.附加规则 [regex、function、callback、confirm、equal、in、length、between、
		         expire、ip_allow、ip_deny、unique]
		5.验证时   [1.新增数据时候验证;2.编辑数据时候验证;3.(默认)全部情况下验证]
	  );
	 */
	protected $_validate=array(
		
	);
	
	/**
	 * 定义自动完成
	 */
	protected $_auto = array(
		//array('addtime', 'time',     1,'function')
	);
	
	/**
	 * 数据库表名
	 *
	 */
	 protected $tableName = 'order_cart';
	 
	 
	 /**
	  * 会员的购物车列表
	  * @param $map array 条件数组
	  */
	 public function listCart($map){
	 	
	 	return $this->where($map)->select();
	 }
	 
	 /**
	  * 添加购物车
	  * @param $map array 输入参数数组
	  */
	 public function addCart($map){
	 
	 	$where['dataid']  = $map['dataid'];
	 	$where['tableid'] = $map['tableid'];
	 	$where['pid']     = $map['pid'];
	 	$where['company'] = $map['company'];
	 	
	 	$row = $this->where($where)->find();
	 	
	 	if($row['id']){

	 		$this->where(array("id"=>$row['id']))->setInc('amount', 1);
	 		$id = $row['id'];
	 	}else{
	 		
	 		$pid   = $map["pid"];
	 		$one   = M("Product")->find($pid);
	 		$array = $map;
	 		
	 		if($one['id']){
	 			
	 			$array['price']   = $this->calcAttrPrice($map['size'],$one);
	 			$array['amount']  = $map['num'];
	 			$array['pno']     = $one['pno'];
	 			$array['package'] = $one['package'];
	 			$array['typeid']  = $one['typeid'];
	 			$array['title']   = $one['title'];
	 			$array['addtime'] = time();
	 			$id = $this->add($array);
	 		}else{
	 			$id = 0;
	 		}	
	 	}
		return $id;
	 }
	 
	 /**
	  * 转移购物车
	  * @param  array $where 条件
	  * @param  array $data  新数据
	  */
	 public function transfer($where, $data){
	 
	 	return $this->where($where)->save($data);
	 }
	 
	 /**
	  * 根据规格计算商品价格
	  */
	 public function calcAttrPrice($size, $row){
	 	
	 	$price = $row['sprice'];
	 	
	 	if($size){
	 		$attr  = json_decode($row['attr'],true);
	 		if($attr[$size]){
	 			$price = $attr[$size]['sprice'];
	 		}
	 	}
	 	return $price;
	 }
	 
	 /**
	  * 更改某项商品的数量
	  * @param $map array 条件数组
	  * @param $num int   商品数量
	  */
	 public function num($map,$num=1){
	 	
	 	$data = array("amount"=>$num);
	 	return $this->where($map)->save($data);
	 }
	 
	 /**
	  * 清空购物车
	  * @param $map array 条件数组
	  * userid
	  */
	 public function remove($map){
	 
	 	return $this->where($map)->delete();
	 }
	
	/**
	 * 删除购物车某项商品
	 * @param $map array 条件数组
	 * userid,id
	 */
	public function delCart($map){
		
		return $this->where($map)->delete();
	}
}